package com.bnz.service.impl;

import com.bnz.mapper.DeptMapper;
import com.bnz.mapper.EmpMapper;
import com.bnz.pojo.Dept;
import com.bnz.pojo.Emp;
import com.bnz.pojo.PageResult;
import com.bnz.service.EmpService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.support.PagedListHolder;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;

import java.util.List;
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;
    @Autowired
    private DeptMapper deptMapper;
    // 1. 查询所有员工
    @Override
    public List<Emp> findAll() {
        // 1.1 查询所有员工
        List<Emp> emps = empMapper.selectAll();
        // 1.2 给每个员工找到对应部门
        for (Emp emp : emps) {
            emp.setDname(deptMapper.selectByPrimaryKey(emp.getDid()).getDname());
        }
        // 1.3 返回
        return emps;
    }

    // 2. 分页查询
    @Override
    public PageResult<Emp> findByPage(int page, int pageSize) {
        // 2.1 开始分页
        PageHelper.startPage(page,pageSize);
        // 2.2 查询所有员工
        List<Emp> emps = empMapper.selectAll();
        // 2.3 给每个员工找到对应部门
        for (Emp emp : emps) {
            emp.setDname(deptMapper.selectByPrimaryKey(emp.getDid()).getDname());
        }
        // 2.4 将集合转换为Page<Emp>
        Page<Emp> empPage = (Page<Emp>) emps;
        // 2.5 返回
        return new  PageResult<>(empPage.getTotal(),empPage.getResult());
    }

    // 3. 条件查询带分页
    @Override
    public PageResult<Emp> search(int page, int pageSize, Emp emp) {
        // 3.1 开始分页
        PageHelper.startPage(page,pageSize);
        // 3.2 自定义条件查询
        List<Emp> empList = empMapper.search(emp);
        // 3.3 给每个员工找到对应的部门
        for (Emp emp1 : empList) {
            emp1.setDname(deptMapper.selectByPrimaryKey(emp1.getDid()).getDname());
        }
        // 3.4 将集合转换为Page<Emp>集合
        Page<Emp> emps = (Page<Emp>) empList;
        // 3.5 返回
        return new PageResult<>(emps.getTotal(),emps.getResult());
    }
}
